/********************************************************************** 
 * FILE		: AbstractClassUtil.java					
 *			
 * AUTHOR   : kloyf		
 * 
 * DATE		: 2011-6-19
 * 									
 * REASON	: CREATE  
 *            							
 * VERSION  ：0.0.1
 *
 ***********************************************************************/
package com.common.util.clazz;

import com.common.util.BaseUtil;
import com.common.util.date.DateUtilTools;
import com.common.util.json.JsonUtilTools;
import com.common.util.string.StringUtilTools;

import java.sql.Timestamp;
import java.util.*;

/**
 * 
 * @author kloyf
 * @version 0.0.1
 */
public abstract class AbstractClassUtil extends BaseUtil {

	/**
	 * 功能描述：返回对象类型名
	 * 
	 * @param object
	 *            Object 传入的对象
	 * @return String 返回类型字符串
	 */
	public static String decisionClass(Object object) {
		if (isEmpty(object)) {
			return "";
		}
		return object.getClass().getCanonicalName();
	}

	/**
	 * 
	 * @param classType
	 * @param value
	 * @return
	 */
	public static Object convertFromString(Class classType, String value) {
		if (!StringUtilTools.isEmptyString(value)) {
			if (classType == String.class) {
				return value;
			} else if (classType == Integer.class) {
				return Integer.valueOf(value);
			} else if (classType == Boolean.class) {
				return Boolean.valueOf(value);
			} else if (classType == Character.class) {
				return value.charAt(0);
			} else if (classType == Double.class) {
				return Double.valueOf(value);
			} else if (classType == Long.class) {
				return Long.valueOf(value);
			} else if (classType == Float.class) {
				return Float.valueOf(value);
			} else if (classType == Date.class) {
				return new Timestamp(DateUtilTools.parse(value, false).getTime());
			} else if (classType == Timestamp.class) {
				return new Timestamp(DateUtilTools.parse(value, false).getTime());
			} else if (classType == String[].class) {
				if (StringUtilTools.isArray(value)) {
					return value.substring(1, value.length() - 2).split(",");
				}
			} else if (classType == Map.class) {
				if (StringUtilTools.isMap(value)) {
					Map<String, Object> map = new HashMap<String, Object>();
					map = JsonUtilTools.json2Map(value);
					return map;
				}
			} else if (classType == List.class) {
				if (StringUtilTools.isArray(value)) {
					List<Object> list = new ArrayList<Object>();
					list = JsonUtilTools.json2List(value);
					return list;
				}
			}
		}
		return value;

	}
}
